Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / ci / setup-python.sh

Displaying Raw • Download


scripts/ci/setup-python.sh v4.4.0-rc.2 (8c81399b) Text, 2.99 KB

T8b949e#!/bin/sh
T8b949e# Build and install Python from official python.org source with GPG verification.
T8b949e# Source: https://www.python.org
T8b949e#
T8b949e# Usage: setup-python.sh [version]
T8b949e# version: exact (3.13.9) or minor (3.13, resolved to latest patch).
Tffa657set -eu

. Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Te6edf3$0Ta5d6ff"Tff7b72)Ta5d6ff/priv.shTa5d6ff"

Te6edf3PY_INPUTTff7b72=Ta5d6ff"Tffd700${Te6edf31Tff7b72:-Te6edf33Tb4b4b4.13Tffd700}Ta5d6ff"

Te6edf3CURRENTTff7b72=Ta5d6ff"Tff7b72$(python3 --version T79c0ff2>/dev/null Tb4b4b4| sed Ta5d6ff's/Python //'Tff7b72)Ta5d6ff" Tff7b72|| Tffa657true

Tff7b72case Ta5d6ff"Te6edf3$PY_INPUTTa5d6ff" Tff7b72in
*.*.*Tff7b72)
Te6edf3PY_VERSIONTff7b72=Ta5d6ff"Te6edf3$PY_INPUTTa5d6ff"
Tb4b4b4;Tb4b4b4;
*Tff7b72)
Tffa657echo Ta5d6ff"Ta5d6ffResolving latest Python Tffd700${Te6edf3PY_INPUTTffd700}Ta5d6ff.x from python.orgTa5d6ff"
Te6edf3PY_VERSIONTff7b72=Ta5d6ff"Tff7b72$(curl -fsSL Ta5d6ff"https://www.python.org/ftp/python/" Tffea00\
Tb4b4b4| grep -o Ta5d6ff"Ta5d6ffhref=\"Tffd700${Te6edf3PY_INPUTTffd700}Ta5d6ff\.[0-9]*/Ta5d6ff" Tffea00\
Tb4b4b4| sed Ta5d6ff's/href="//;s/\///' Tffea00\
Tb4b4b4| sort -t. -k3 -n Tffea00\
Tb4b4b4| tail -1Tff7b72)Ta5d6ff"
Tff7b72if Tff7b72[ -z Ta5d6ff"Te6edf3$PY_VERSIONTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffFailed to resolve Python Tffd700${Te6edf3PY_INPUTTffd700}Ta5d6ff.xTa5d6ff" >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi
Tffa657echo Ta5d6ff"Ta5d6ffResolved to Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff"
Tb4b4b4;Tb4b4b4;
Tff7b72esac

Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$CURRENTTa5d6ff" Tff7b72= Ta5d6ff"Te6edf3$PY_VERSIONTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffPython Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff already installedTa5d6ff"
python3 --version
Tffa657exit T79c0ff0
Tff7b72fi

Tffa657echo Ta5d6ff"Ta5d6ffBuilding Python Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff from source (python.org)Ta5d6ff"

run_priv apt-get update -qq
run_priv apt-get install -y -qq Tffea00\
build-essential gnupg curl Tffea00\
libssl-dev zlib1g-dev libbz2-dev libreadline-dev Tffea00\
libsqlite3-dev libffi-dev liblzma-dev libncurses-dev > /dev/null T79c0ff2>Tb4b4b4&T79c0ff1

Te6edf3TARBALLTff7b72=Ta5d6ff"Ta5d6ffPython-Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff.tar.xzTa5d6ff"
Te6edf3SRC_URLTff7b72=Ta5d6ff"Ta5d6ffhttps://www.python.org/ftp/python/Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff/Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff"
Te6edf3SIG_URLTff7b72=Ta5d6ff"Tffd700${Te6edf3SRC_URLTffd700}Ta5d6ff.ascTa5d6ff"

curl -fsSL Ta5d6ff"Te6edf3$SRC_URLTa5d6ff" -o Ta5d6ff"Ta5d6ff/tmp/Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff"
curl -fsSL Ta5d6ff"Te6edf3$SIG_URLTa5d6ff" -o Ta5d6ff"Ta5d6ff/tmp/Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff.ascTa5d6ff"

Te6edf3GPG_KEYSTff7b72=Ta5d6ff""
Tff7b72case Ta5d6ff"Te6edf3$PY_VERSIONTa5d6ff" Tff7b72in
T79c0ff3.13.*Tb4b4b4|T79c0ff3.14.*Tff7b72)
Te6edf3GPG_KEYSTff7b72=Ta5d6ff"A035C8C19219BA821ECEA86B64E628F8D684696D 7169605F62C751356D054A26A821E680E5FA6305"
Tb4b4b4;Tb4b4b4;
T79c0ff3.11.*Tb4b4b4|T79c0ff3.12.*Tff7b72)
Te6edf3GPG_KEYSTff7b72=Ta5d6ff"A035C8C19219BA821ECEA86B64E628F8D684696D 7169605F62C751356D054A26A821E680E5FA6305"
Tb4b4b4;Tb4b4b4;
T79c0ff3.9.*Tb4b4b4|T79c0ff3.10.*Tff7b72)
Te6edf3GPG_KEYSTff7b72=Ta5d6ff"E3FF2839C048B25C084DEBE9B26995E310250568"
Tb4b4b4;Tb4b4b4;
*Tff7b72)
Tffa657echo Ta5d6ff"Ta5d6ffNo known GPG key for Python Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff; skipping signature checkTa5d6ff" >Tb4b4b4&T79c0ff2
Tb4b4b4;Tb4b4b4;
Tff7b72esac

Tff7b72if Tff7b72[ -n Ta5d6ff"Te6edf3$GPG_KEYSTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657export Te6edf3GNUPGHOMETff7b72=Ta5d6ff"Tff7b72$(mktemp -dTff7b72)Ta5d6ff"
Tff7b72for key Tff7b72in Te6edf3$GPG_KEYSTb4b4b4; Tff7b72do
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys Ta5d6ff"Te6edf3$keyTa5d6ff" T79c0ff2>/dev/null Tff7b72|| Tffea00\
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys Ta5d6ff"Te6edf3$keyTa5d6ff" T79c0ff2>/dev/null Tff7b72|| Tffa657true
Tff7b72done
gpg --batch --verify Ta5d6ff"Ta5d6ff/tmp/Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff.ascTa5d6ff" Ta5d6ff"Ta5d6ff/tmp/Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff"
rm -rf Ta5d6ff"Te6edf3$GNUPGHOMETa5d6ff"
Tffa657unset GNUPGHOME
Tffa657echo Ta5d6ff"GPG signature verified"
Tff7b72fi

Tffa657cd /tmp
tar -xJf Ta5d6ff"Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff"
Tffa657cd Ta5d6ff"Ta5d6ffPython-Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff"

Te6edf3BUILD_LOGTff7b72=Ta5d6ff"/tmp/python-build.log"
./configure --prefixTff7b72=/usr/local --with-ensurepipTff7b72=install > Ta5d6ff"Te6edf3$BUILD_LOGTa5d6ff" T79c0ff2>Tb4b4b4&T79c0ff1
make -jTa5d6ff"Tff7b72$(nprocTff7b72)Ta5d6ff" >> Ta5d6ff"Te6edf3$BUILD_LOGTa5d6ff" T79c0ff2>Tb4b4b4&T79c0ff1
run_priv make install >> Ta5d6ff"Te6edf3$BUILD_LOGTa5d6ff" T79c0ff2>Tb4b4b4&T79c0ff1

run_priv ln -sf /usr/local/bin/python3 /usr/local/bin/python
run_priv ln -sf /usr/local/bin/pip3 /usr/local/bin/pip

Tffa657cd /
rm -rf Ta5d6ff"Ta5d6ff/tmp/Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff" Ta5d6ff"Ta5d6ff/tmp/Tffd700${Te6edf3TARBALLTffd700}Ta5d6ff.ascTa5d6ff" Ta5d6ff"Ta5d6ff/tmp/Python-Tffd700${Te6edf3PY_VERSIONTffd700}Ta5d6ff" Ta5d6ff"Te6edf3$BUILD_LOGTa5d6ff"

python3 --version
pip3 --version


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────